home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / scheme / schmrprt / r4rs.lha / intro.tex < prev    next >
Encoding:
Text File  |  1991-11-08  |  7.9 KB  |  163 lines

  1. \clearextrapart{Introduction}
  2.  
  3. \label{historysection}
  4.  
  5. Programming languages should be designed not by piling feature on top of
  6. feature, but by removing the weaknesses and restrictions that make additional
  7. features appear necessary.  Scheme demonstrates that a very small number
  8. of rules for forming expressions, with no restrictions on how they are
  9. composed, suffice to form a practical and efficient programming language
  10. that is flexible enough to support most of the major programming
  11. paradigms in use today.
  12.  
  13. %Scheme has influenced the evolution of Lisp.
  14. Scheme
  15. was one of the first programming languages to incorporate first class
  16. procedures as in the lambda calculus, thereby proving the usefulness of
  17. static scope rules and block structure in a dynamically typed language.
  18. Scheme was the first major dialect of Lisp to distinguish procedures
  19. from lambda expressions and symbols, to use a single lexical
  20. environment for all variables, and to evaluate the operator position
  21. of a procedure call in the same way as an operand position.  By relying
  22. entirely on procedure calls to express iteration, Scheme emphasized the
  23. fact that tail-recursive procedure calls are essentially goto's that
  24. pass arguments.  Scheme was the first widely used programming language to
  25. embrace first class escape procedures, from which all previously known
  26. sequential control structures can be synthesized.  More recently, building
  27. upon the design of generic arithmetic in Common Lisp, Scheme introduced
  28. the concept of exact and inexact numbers.
  29. With the appendix to this report Scheme becomes the first programming
  30. language to support hygienic macros, which permit the syntax of a
  31. block-structured language to be extended reliably.
  32. % A few
  33. %of these innovations have recently been incorporated into Common Lisp, while
  34. %others remain to be adopted.
  35.  
  36. \todo{Ramsdell:
  37. I would like to make a few comments on presentation.  The most
  38. important comment is about section organization.  Newspaper writers
  39. spend most of their time writing the first three paragraphs of any
  40. article.  This part of the article is often the only part read by
  41. readers, and is important in enticing readers to continue.  In the
  42. same way, The first page is most likely to be the only page read by
  43. many SIGPLAN readers.  If I had my choice of what I would ask them to
  44. read, it would be the material in section 1.1, the Semantics section
  45. that notes that scheme is lexically scoped, tail recursive, weakly
  46. typed, ... etc.  I would expand on the discussion on continutations,
  47. as they represent one important difference between Scheme and other
  48. languages.  The introduction, with its history of scheme, its history
  49. of scheme reports and meetings, and acknowledgements giving names of
  50. people that the reader will not likely know, is not that one page I
  51. would like all to read.  I suggest moving the history to the back of
  52. the report, and use the first couple of pages to convince the reader
  53. that the language documented in this report is worth studying.
  54. }
  55.  
  56. \subsection*{Background}
  57.  
  58. \vest The first description of Scheme was written in
  59. 1975~\cite{Scheme75}.  A revised report~\cite{Scheme78}
  60. \todo{italicize or not?} appeared in 1978, which described the evolution
  61. of the language as its MIT implementation was upgraded to support an
  62. innovative compiler~\cite{Rabbit}.  Three distinct projects began in
  63. 1981 and 1982 to use variants of Scheme for courses at MIT, Yale, and
  64. Indiana University~\cite{Rees82,MITScheme,Scheme311}.  An introductory
  65. computer science textbook using Scheme was published in
  66. 1984~\cite{SICP}.
  67.  
  68. %\vest As might be expected of a language used primarily for education and
  69. %research, Scheme has always evolved rapidly.  This was no problem when
  70. %Scheme was used only within MIT, but 
  71. \vest As Scheme became more widespread,
  72. local dialects began to diverge until students and researchers
  73. occasionally found it difficult to understand code written at other
  74. sites.
  75. Fifteen representatives of the major implementations of Scheme therefore
  76. met in October 1984 to work toward a better and more widely accepted
  77. standard for Scheme.
  78. %Participating in this workshop were Hal Abelson, Norman Adams, David
  79. %Bartley, Gary Brooks, William Clinger, Daniel Friedman, Robert Halstead,
  80. %Chris Hanson, Christopher Haynes, Eugene Kohlbecker, Don Oxley, Jonathan Rees,
  81. %Guillermo Rozas, Gerald Jay Sussman, and Mitchell Wand.  Kent Pitman
  82. %made valuable contributions to the agenda for the workshop but was
  83. %unable to attend the sessions.
  84. %
  85. %Subsequent electronic mail discussions and committee work completed the
  86. %definition of the language.
  87. %Gerry Sussman drafted the section on numbers, Chris Hanson drafted the
  88. %sections on characters and strings, and Gary Brooks and William Clinger
  89. %drafted the sections on input and output.
  90. %William Clinger recorded the decisions of the workshop and
  91. %compiled the pieces into a coherent document.
  92. %The ``Revised revised report on Scheme''~\cite{RRRS}
  93. Their report~\cite{RRRS}
  94. was published at MIT and Indiana University in the summer of 1985.
  95. Another round of revision took place in the spring of 1986~\cite{R3RS}.
  96. %, again accomplished
  97. %almost entirely by electronic mail, resulted in the present report.
  98. The present report reflects further revisions agreed upon in a meeting
  99. that preceded the 1988 ACM Conference on Lisp and Functional Programming
  100. and in subsequent electronic mail.
  101.  
  102. %\vest The number 3 in the title is part of the title, not a reference to
  103. %a footnote.  The word ``revised'' is raised to the third power because
  104. %the report is a revision of a report that was already twice revised.
  105.  
  106. \todo{Write an editors' note?}
  107.  
  108.  
  109. \medskip
  110.  
  111. We intend this report to belong to the entire Scheme community, and so
  112. we grant permission to copy it in whole or in part without fee.  In
  113. particular, we encourage implementors of Scheme to use this report as
  114. a starting point for manuals and other documentation, modifying it as
  115. necessary.
  116.  
  117.  
  118.  
  119.  
  120. \subsection*{Acknowledgements}
  121.  
  122. We would like to thank the following people for their help: Alan Bawden, Michael
  123. Blair, George Carrette, Andy Cromarty, Pavel Curtis, Jeff Dalton, Olivier Danvy,
  124. Ken Dickey, Andy Freeman, Richard Gabriel, Yekta G\"ursel, Ken Haase, Robert
  125. Hieb, Paul Hudak,
  126. Richard Kelsey, Morry Katz, Chris Lindblad, Mark Meyer, Jim Miller, Jim Philbin,
  127. John Ramsdell, Mike Shaff, Jonathan Shapiro, Julie Sussman,
  128. Perry Wagle, Daniel Weise, Henry Wu, and Ozan Yigit.
  129. We thank Carol Fessenden, Daniel
  130. Friedman, and Christopher Haynes for permission to use text from the Scheme 311
  131. version 4 reference manual.  We thank Texas Instruments, Inc.~for permission to
  132. use text from the {\em TI Scheme Language Reference Manual.} We gladly
  133. acknowledge the influence of manuals for MIT Scheme, T, Scheme 84,
  134. Common Lisp, and Algol 60.
  135.  
  136. \vest We also thank Betty Dexter for the extreme effort she put into
  137. setting this report in \TeX, and Donald Knuth for designing the program
  138. that caused her troubles.
  139.  
  140. \vest The Artificial Intelligence Laboratory of the
  141. Massachusetts Institute of Technology, the Computer Science
  142. Department of Indiana University, and the Computer and Information
  143. Sciences Department of the University of Oregon supported the
  144. preparation of this report.  Support for the MIT work was provided in part by
  145. the Advanced Research Projects Agency of the Department of Defense under Office
  146. of Naval Research contract N00014-80-C-0505.  Support for the Indiana
  147. University work was provided by NSF grants NCS 83-04567 and NCS
  148. 83-03325.
  149.  
  150.  
  151. \todo{Steele:
  152.  
  153. [c] There should be a very clear message to the reader that Scheme certainly
  154. does owe debts to other sources, and one of them is Common Lisp.  While
  155. Scheme certainly has been the pioneer in the treatment of closures and
  156. functional programming in a Lisp framework, I think it is fair to say that
  157. Common lisp pioneered a rational (forgive the pun) treatment of numeric data
  158. types in a Lisp framework, and my impression is that Scheme learned
  159. something in this area from the Common Lisp experience.
  160. }
  161.  
  162. % I think the above \todo has been done. -- Will, 1991.
  163.